/*
 * CommunicationAGV.cpp
 *
 *  Created on: 04/11/2013
 *      Author: gonzalo
 */

#include "CommunicationAGV.h"

namespace middleware {

const std::string CommunicationAGV::AGV_QUEUE_PEDIDOS_PATH = "/tmp/robotAGV";

CommunicationAGV::CommunicationAGV(char key):
			colaPedidos(ipc::MessageQueue<PedidoPiezas>::get(AGV_QUEUE_PEDIDOS_PATH, key))
{
	CLogger::log("Key: " + key);
}

void CommunicationAGV::create(char key) {
	ipc::MessageQueue<PedidoPiezas>::create(AGV_QUEUE_PEDIDOS_PATH, key);
}

void CommunicationAGV::destroy(char key) {
	ipc::MessageQueue<PedidoPiezas>::destroy(AGV_QUEUE_PEDIDOS_PATH, key);
}

void CommunicationAGV::agregarPedidoCanastos(PedidoPiezas piezas) {
	colaPedidos.put(AGV_TIPO_PEDIDOS, piezas);
}

std::vector<TipoPieza> CommunicationAGV::obtenerPedidoDePiezas() {
	PedidoPiezas piezasRequeridas = colaPedidos.get(AGV_TIPO_PEDIDOS);
	std::vector<TipoPieza> resultado;
	std::stringstream ss;
	ss << "[ ";
	for (int i=0; i< MAX_PIEZAS; i++) {
		if(piezasRequeridas.piezas[i] > 0){
			ss << piezasRequeridas.piezas[i] << " ";
			resultado.push_back(piezasRequeridas.piezas[i]);
		}
	}
	ss << " ]";
	CLogger::log("Pedido de piezas:" + ss.str());

	return resultado;
}

void CommunicationAGV::colocarCanastosEnPosicion(Canasto c[MAX_PIEZAS], int pos) {

}

CommunicationAGV::~CommunicationAGV() {
}

} /* namespace middleware */
